package istar;

import istar.impl.MeansEndLink;
import istar.impl.TaskDecompositionLink;

import jade.core.behaviours.Behaviour;

import java.io.Serializable;
import java.util.List;

public interface IElement extends Cloneable, Serializable{

	public static final int DENIED = -2;
	public static final int WEAKLY_DENIED = -1;
	public static final int UNDECIDED = 0;
	public static final int WEAKLY_SATISFIED = 1;
	public static final int SATISFIED = 2;

	public boolean achieved();
	
	public String getId();
	
	public void setId(String _id);
	
	public String getName();
    
    public void setName(String value);
    
	public List<Object> getContent();
	
    
    //public Object getContent();
	
	//public void setContent(Object content);
    
	public boolean isMain();
	
	public IElement getMain();
	
	public void setMain(boolean value);
    
	public List<IDependency> getDependencies();
	
	public void setDependencies(List<IDependency> dependencies);

	public IActor getOwner();
	
	public void setOwner(IActor owner);

	public MeansEndLink getMeansEndLink();
	
	public void setMeansEndLink(MeansEndLink meansEndLink);
	
	public List<TaskDecompositionLink> getSupports();

	public void setSupports(List<TaskDecompositionLink> supports);
	
    public boolean able(IActor Actor);
    
    public boolean workable(IActor Actor);
    
    public boolean isBasic();
    
    public String getTopic();
    
    public String getExecutionNumber();
    
    abstract Object clone(IActor newOwner) throws CloneNotSupportedException;
    
    public List<IElement> getDependeeElements();
    
    public void clear();
    
    //public Behaviour getBehaviour();
   
    
}
